/*** 前端封装API接口模块 ：订单Order模块
 */
import http from "@/utils/request";

// 1 创建订单 POST /order/create
// 参数名  参数说明    备注
// address_id   收货地址id
// remark   备注信息
// productList  购买商品数组,如：
//  [{"product_id":"1","count":5,"price":129},
//   {"product_id":"2","count":23,"price":222}]  这里的product_id是指商品id
/**
 * 创建订单
 * @param {Object} params - 包含订单信息的参数对象，包括address_id、remark、productList等
 * @returns {Promise} - 返回一个Promise对象，成功时返回服务器响应数据，失败时返回错误信息
 */
export function createOrderAPI(params) {
	// 参数校验
	const requiredParams = ['address_id', 'productList'];
	const missingParams = requiredParams.filter(param => !params[param]);
	if (missingParams.length > 0) {
		console.error(`createOrderAPI缺少必要参数: ${missingParams.join(', ')}`);
		return Promise.reject(new Error(`缺少必要参数: ${missingParams.join(', ')}`));
	}
	return http.request({
			url: "/order/create", // 统一URL格式，添加斜杠
			method: "post",
			data: params
		})
		.catch(error => {
			console.error('createOrderAPI请求失败:', error);
			return Promise.reject(error);
		});
}

// 2 查询订单列表
// 参数名  参数说明    备注
// 无参数
/**
 * 查询订单列表
 * @returns {Promise} - 返回一个Promise对象，成功时返回服务器响应数据，失败时返回错误信息
 */
export function getOrderListAPI() {
	return http.request({
			url: "/order/list", // 统一URL格式，添加斜杠
			method: "get"
		})
		.catch(error => {
			console.error('getOrderListAPI请求失败:', error);
			return Promise.reject(error);
		});
}

// 3 查询订单详情 
// 参数名  参数说明    备注
// id   订单id
/**
 * 根据订单ID查询订单详情
 * @param {string|number} id - 订单ID
 * @returns {Promise} - 返回一个Promise对象，成功时返回服务器响应数据，失败时返回错误信息
 */
export function getOrderDetailByIdAPI(id) {
	if (!id) {
		console.error('getOrderDetailByIdAPI缺少必要参数: id');
		return Promise.reject(new Error('缺少必要参数: id'));
	}
	return http.request({
			url: "/order/detail", // 统一URL格式，添加斜杠
			method: "get",
			params: {
				id
			}
		})
		.catch(error => {
			console.error('getOrderDetailByIdAPI请求失败:', error);
			return Promise.reject(error);
		});
}

// 4 取消订单 
// 参数名  参数说明    备注
// id   订单id
/**
 * 根据订单ID取消订单
 * @param {string|number} id - 订单ID
 * @returns {Promise} - 返回一个Promise对象，成功时返回服务器响应数据，失败时返回错误信息
 */
export function cancleOrderByIdAPI(id) {
	if (!id) {
		console.error('cancleOrderByIdAPI缺少必要参数: id');
		return Promise.reject(new Error('缺少必要参数: id'));
	}
	return http.request({
			url: "/order/cancel", // 统一URL格式，添加斜杠
			method: "post",
			data: {
				id
			}
		})
		.catch(error => {
			console.error('cancleOrderByIdAPI请求失败:', error);
			return Promise.reject(error);
		});
}

// 5 删除订单 
// 参数名  参数说明    备注
// id   订单id
/**
 * 根据订单ID删除订单
 * @param {string|number} id - 订单ID
 * @returns {Promise} - 返回一个Promise对象，成功时返回服务器响应数据，失败时返回错误信息
 */
export function deleteOrderByIdAPI(id) {
	if (!id) {
		console.error('deleteOrderByIdAPI缺少必要参数: id');
		return Promise.reject(new Error('缺少必要参数: id'));
	}
	return http.request({
			url: "/order/delete", // 统一URL格式，添加斜杠
			method: "post",
			data: {
				id
			}
		})
		.catch(error => {
			console.error('deleteOrderByIdAPI请求失败:', error);
			return Promise.reject(error);
		});
}